/**
 * 加载配置文件模块、基于nconf封装
 * 提供系统配置解析方法
 */

'use strict';

let nconf=require('nconf');

let log4js = require('./logger');

let logger=log4js.logger();

let path=require('path');

const configPath=path.resolve(__dirname,'../../config/config.json');
const sqlPath=path.resolve(__dirname,'../../model/model.config.json');

/**
 * 加载公共配置文件，应该包含以下信息：
 * -database
 * -
 */
nconf.file('config',{
    file:configPath
})

/**
 * 加载sql配置文件
 */
nconf.file('sql',{
    file:sqlPath
})



let me={

    /**
     * 读取model配置sql字符串
     * @param key
     */
    sql(key){
        return nconf.get("model:"+key+":sql");
    },

    path(key){
        const data=nconf.get("model:"+key);
        return "/"+key+data.path;
    },

    /**
     * 从model配置文件解析接口配置
     * @returns {Array}
     */
    paths(){
        let paths=[],
            data=nconf.get("model");

        data=data||{};

        for(var p in data){
            let temp="";
            let {name,path,query}=data[p];
            if(path){
                temp="/:"+path.join("/:");
            }
            paths.push({
                key:p,//接口sql字段
                name:name,//接口客户化名称
                path:p.split("#")[1]+temp, //接口路径
                queryKeys:query,//是否拥有查询字符串
                pathKeys:path //是否拥有路径查询字符串
            });
        }
        return paths;
    }

}

module.exports=me;